﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using sistem;

namespace sistem
{
    public partial class AdministratorSkolskeGodineKontrola : UserControl
    {
        List<Predmet> predmeti = new List<Predmet>();
        List<Predmet> predmetiReserve = new List<Predmet>();

        public AdministratorSkolskeGodineKontrola()
        {
            InitializeComponent();
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            DodavanjeSkolskeGodineForma novaSkolskaGodina = new DodavanjeSkolskeGodineForma();
            novaSkolskaGodina.Show();
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem != null)
            {
                UredjivanjePredmetaForma urediPredmet = new UredjivanjePredmetaForma((Predmet)listBox1.SelectedItem);
                urediPredmet.Show();
            }
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem != null)
            {
                try
                {
                    Predmet lbp = new Predmet();
                    lbp = (Predmet)listBox1.SelectedItem;
                    DAL.DAL d = DAL.DAL.Instanca;
                    d.kreirajKonekciju("127.0.0.1", "skola", "root", "mysqlftw123-.-");
                    d.getDAO.getPredmetDAO().delete(lbp);
                    d.terminirajKonekciju();
                    predmeti.RemoveAt(listBox1.SelectedIndex);
                    d.kreirajKonekciju("127.0.0.1", "skola", "root", "mysqlftw123-.-");
                    predmeti = d.getDAO.getPredmetDAO().getAll();
                    d.terminirajKonekciju();
                    List<ProfesorPredmetVeza> veze = new List<ProfesorPredmetVeza>();
                    d.kreirajKonekciju("127.0.0.1", "skola", "root", "mysqlftw123-.-");
                    veze = d.getDAO.getProfesorPredmetVezaDAO().getAll();
                    d.terminirajKonekciju();
                    List<Profesor> profesori = new List<Profesor>();
                    d.kreirajKonekciju("127.0.0.1", "skola", "root", "mysqlftw123-.-");
                    profesori = d.getDAO.getProfesorDAO().getAll();
                    d.terminirajKonekciju();
                    for (int i = 0; i < predmeti.Count; i++)
                    {
                        predmeti[i].ProfesoriPredavaci = new List<Profesor>();
                        for (int j = 0; j < veze.Count; j++)
                            if (predmeti[i].ID == veze[j].PredmetID)
                            {
                                for (int k = 0; k < profesori.Count; k++)
                                    if (profesori[k].ID == veze[j].ProfesorID)
                                        predmeti[i].ProfesoriPredavaci.Add(profesori[k]);
                            }
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Došlo je do pogreške prilikom rada s bazom podataka", "Greška", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                if (toolStripTextBox1.Text == "")
                {
                    listBox1.DataSource = predmetiReserve;
                    listBox1.DataSource = predmeti;
                }
                else
                {
                    predmetiReserve.Clear();
                    for (int i = 0; i < predmeti.Count; i++)
                    {
                        if (predmeti[i].ToString().ToUpper().Contains(toolStripTextBox1.Text.ToUpper()))
                            predmetiReserve.Add(predmeti[i]);
                    }
                    listBox1.DataSource = predmeti;
                    listBox1.DataSource = predmetiReserve;
                }
            }
        }

        private void AdministratorPredmetiKontrola_Load(object sender, EventArgs e)
        {
            try
            {
                DAL.DAL d = DAL.DAL.Instanca;
                d.kreirajKonekciju("127.0.0.1", "skola", "root", "mysqlftw123-.-");
                predmeti = d.getDAO.getPredmetDAO().getAll();
                d.terminirajKonekciju();
                List<ProfesorPredmetVeza> veze = new List<ProfesorPredmetVeza>();
                d.kreirajKonekciju("127.0.0.1", "skola", "root", "mysqlftw123-.-");
                veze = d.getDAO.getProfesorPredmetVezaDAO().getAll();
                d.terminirajKonekciju();
                List<Profesor> profesori = new List<Profesor>();
                d.kreirajKonekciju("127.0.0.1", "skola", "root", "mysqlftw123-.-");
                profesori = d.getDAO.getProfesorDAO().getAll();
                d.terminirajKonekciju();
                for (int i = 0; i < predmeti.Count; i++)
                {
                    predmeti[i].ProfesoriPredavaci = new List<Profesor>();
                    for (int j = 0; j < veze.Count; j++)
                        if (predmeti[i].ID == veze[j].PredmetID)
                        {
                            for (int k = 0; k < profesori.Count; k++)
                                if (profesori[k].ID == veze[j].ProfesorID)
                                    predmeti[i].ProfesoriPredavaci.Add(profesori[k]);
                        }
                }
                d.terminirajKonekciju();
            }
            catch (Exception)
            {
                MessageBox.Show("Došlo je do pogreške prilikom rada s bazom podataka", "Greška", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            listBox1.DataSource = predmeti;
        }

        private void toolStripTextBox1_TextChanged(object sender, EventArgs e)
        {
            if (toolStripTextBox1.Text == "")
            {
                listBox1.DataSource = predmetiReserve;
                listBox1.DataSource = predmeti;
            }
            else
            {
                predmetiReserve.Clear();
                for (int i = 0; i < predmeti.Count; i++)
                {
                    if (predmeti[i].ToString().ToUpper().Contains(toolStripTextBox1.Text.ToUpper()))
                        predmetiReserve.Add(predmeti[i]);
                }
                listBox1.DataSource = predmeti;
                listBox1.DataSource = predmetiReserve;
            }
        }

        private void listBox1_MouseUp(object sender, MouseEventArgs e)
        {
            if (listBox1.SelectedItem != null)
            {
                label8.Text = "";
                Predmet lbp = new Predmet();
                lbp = (Predmet)listBox1.SelectedItem;
                label4.Text = lbp.PuniNaziv;
                label6.Text = lbp.SkraceniNaziv;
                label7.Text = lbp.Opis;
                for (int i = 0; i < lbp.ProfesoriPredavaci.Count; i++)
                    label8.Text += " " + lbp.ProfesoriPredavaci[i].ToString();
            }
        }
    }
}
